var socket;
const config = require('../utils/config.js')
/**
 * 链接服务器
 */
export function connect() {
  let globalData = getApp().globalData;
  if (!globalData.openId) {
    // console.log('socket连接创建失败没有openId'+globalData.openId);
    return;
  }
  // console.log("创建新连接"+globalData.openId)
  if (socket) {
    wx.closeSocket(socket);
  }
  socket = wx.connectSocket({
    url: config.socketServer,
    header: {
      openId: globalData.openId,
      platform: 'customer'
    }
  })
  socket.onOpen(function (res) {
    // console.log(res);
    // console.log("onOpen");
    checkHeart();
  });
  socket.onClose(function (res) {
    // console.log("onClose");
    // console.log(res);
  });
  socket.onError(function (res) {
    // console.log("onError");
    // console.log(res);
    setTimeout(connect, 3000);
  });
  socket.onMessage(function (res) {
    //此处需要监听心跳，如果没有心跳则重新链接
    //  console.log(res);
    let json = JSON.parse(res.data);
    if (json.reqType == CHECK_HEARTBEAT) {
      serverNum = json.reqParam.num + 1;
    }
    // console.info(json.reqType+":"+JSON.stringify(json));
    getApp().globalData[json.reqType] = json;
    // let aa= getApp().globalData;//[json.reqType];
  });
}
/**
 * 获取链接
 */
export function getsocket() {
  return socket;
}
export function sendData(reqType, reqParam) {
  //let readyStat= getsocket().readyStat;
  //getsocket().send(param);
  let json = {
    reqType: reqType,
    reqParam: reqParam
  }
  let msg = JSON.stringify(json);
  let sendData = {
    data: msg
  }
  if (socket && socket.readyState == 1) {
    socket.send(sendData);
  } else {
    let that = this;
    // console.log(reqType+"-socket尚未初始化.稍后重发")
    setTimeout(() => {
      that.sendData(reqType, reqParam)
      // console.info(reqParam)
      // console.log(reqType+"重发成功")
    }, 100)
  }
}
let heartNum = 0; //请求服务器的编号
let serverNum = 0; //服务器返回的编号
//检测心跳
function checkHeart() {
  let reqParam = {
    num: heartNum
  };
  sendData(CHECK_HEARTBEAT, reqParam);
  setTimeout(function () {
    checkNum(heartNum);
  }, 1500);
  heartNum++;
}
/**
 * 检测数字发生变化，
 */
function checkNum(heartNum) {
  if (heartNum > serverNum) {
    //多次请求服务器都没有返回
    //debugger;
    connect();
  } else {
    //请求通了，5秒后再请求
    setTimeout(checkHeart, 5000);
  }
}

let CHECK_HEARTBEAT = "CHECK_HEARTBEAT";
//（接口）获取我的未读消息总数
//（接口）获取我的消息列表（分页）单独创建一张统计表存储，与某个人的最后一条信息， 一个人的对话一条（未读消息数量，最后一条消息信息+时间、(如果是当天只返回时分秒，如果不是当天则只返回月-日)）

//（接口）获取与某人的对话列表倒序分页
//（接口）将某人发给我的信息变为已读
//（接口）收到新消息（服务端通知客户端）
//（接口）给某人发消息

//数据库
//消息表
// id  发送人id ，接收人id， 消息内容，发送时间，是否已读（默认未读），读取时间，
//聊天统计表
//id  两个人的id组合唯一值 ，最后一条消息内容，最后一条消息时间，